package com.shen.langchain4j.listener;

import cn.hutool.core.util.IdUtil;
import dev.langchain4j.model.chat.listener.ChatModelErrorContext;
import dev.langchain4j.model.chat.listener.ChatModelListener;
import dev.langchain4j.model.chat.listener.ChatModelRequestContext;
import dev.langchain4j.model.chat.listener.ChatModelResponseContext;
import lombok.extern.slf4j.Slf4j;

/**
 * 大模型监听实现类
 */
@Slf4j
public class TestChatModelListener implements ChatModelListener {

    /**
     * 向 LLM 发送的请求时的监听事件
     *
     * @param requestContext The request context.
     */
    @Override
    public void onRequest(ChatModelRequestContext requestContext) {
//        String uuid = UUID.randomUUID().toString();
        // 使用Hutool工具库中的id生成工具生成UUID
        String uuid = IdUtil.simpleUUID();
        requestContext.attributes().put("traceId", uuid);
        log.info("[请求监听] 请求参数 requestContext: " + requestContext.attributes().toString());
    }

    /**
     * 来自 LLM 的响应时的监听事件
     *
     * @param responseContext The response context.
     */
    @Override
    public void onResponse(ChatModelResponseContext responseContext) {
        log.info("[响应监听] 返回结果 responseContext: " + responseContext.attributes().toString());
    }

    /**
     * 错误的监听事件
     *
     * @param errorContext The error context.
     */
    @Override
    public void onError(ChatModelErrorContext errorContext) {
        log.error("[异常监听] 请求异常 errorContext: " + errorContext);
    }
}
